home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 3 / Info_Mac_1994-01.iso / Development / General / SpriteWorld 1.0b3 / Examples / SimpleBreakOut / Application.c < prev    next >
C/C++ Source or Header  |  1993-06-12  |  3KB  |  233 lines

  1. ///--------------------------------------------------------------------------------------
  2. //    Application.c
  3. //
  4. //    Created:    Sunday, April 11, 1993
  5. //    By:        Tony Myles
  6. //
  7. //    Copyright: © 1993 Tony Myles, All rights reserved worldwide.
  8. ///--------------------------------------------------------------------------------------
  9.  
  10.  
  11. #if THINK_C
  12. #ifndef __BDC__
  13. #include <BDC.h>
  14. #endif
  15. #else
  16. #ifndef __PACKAGES__
  17. #include <Packages.h>
  18. #endif
  19. #endif
  20.  
  21. #ifndef __APPLEEVENTS__
  22. #include <AppleEvents.h>
  23. #endif
  24.  
  25. #ifndef __DESK__
  26. #include <Desk.h>
  27. #endif
  28.  
  29. #ifndef __DIALOGS__
  30. #include <Dialogs.h>
  31. #endif
  32.  
  33. #ifndef __DISKINIT__
  34. #include <DiskInit.h>
  35. #endif
  36.  
  37. #ifndef __EPPC__
  38. #include <EPPC.h>
  39. #endif
  40.  
  41. #ifndef __EVENTS__
  42. #include <Events.h>
  43. #endif
  44.  
  45. #ifndef __ERRORS__
  46. #include <Errors.h>
  47. #endif
  48.  
  49. #ifndef __FONTS__
  50. #include <Fonts.h>
  51. #endif
  52.  
  53. #ifndef __GESTALTEQU__
  54. #include <GestaltEqu.h>
  55. #endif
  56.  
  57. #ifndef __MENUS__
  58. #include <Menus.h>
  59. #endif
  60.  
  61. #ifndef __RESOURCES__
  62. #include <Resources.h>
  63. #endif
  64.  
  65. #ifndef __OSEVENTS__
  66. #include <OSEvents.h>
  67. #endif
  68.  
  69. #ifndef __TEXTEDIT__
  70. #include <TextEdit.h>
  71. #endif
  72.  
  73. #ifndef __TRAPS__
  74. #include <Traps.h>
  75. #endif
  76.  
  77. #ifndef __TOOLUTILS__
  78. #include <ToolUtils.h>
  79. #endif
  80.  
  81. #ifndef __WINDOWS__
  82. #include <Windows.h>
  83. #endif
  84.  
  85. #ifndef __SPRITEWORLDUTILS__
  86. #include <SpriteWorldUtils.h>
  87. #endif
  88.  
  89. #ifndef __APPLICATION__
  90. #include "Application.h"
  91. #endif
  92.  
  93. #ifndef __SIMPLEBREAKOUT__
  94. #include "SimpleBreakOut.h"
  95. #endif
  96.  
  97.  
  98. WindowPtr gWindowP = NULL;
  99.  
  100.  
  101. void main(void)
  102. {
  103.     Initialize(kNumberOfMoreMastersCalls);
  104.  
  105.     if (CheckSystem())
  106.     {
  107.         CreateWindow();
  108.  
  109.         ShowWindow(gWindowP);
  110.  
  111.         PerformSimpleAnimation((CWindowPtr)gWindowP);
  112.  
  113.         DisposeWindow(gWindowP);
  114.     }
  115.     else
  116.     {
  117.         CantRunOnThisMachine();
  118.     }
  119.  
  120.     ExitToShell();
  121. }
  122.  
  123.  
  124. void Initialize(short numberOfMasters)
  125. {
  126.     EventRecord tempEvent;
  127.  
  128.     MaxApplZone();
  129.  
  130.     while (numberOfMasters--)
  131.     {
  132.         MoreMasters();
  133.     }
  134.  
  135.     InitGraf(&qd.thePort);
  136.     InitFonts();
  137.     InitWindows();
  138.     InitMenus();
  139.     TEInit();
  140.     InitDialogs(NULL);
  141.     InitCursor();
  142.     FlushEvents(everyEvent, 0);
  143.  
  144.     (void)EventAvail(everyEvent, &tempEvent);
  145.     (void)EventAvail(everyEvent, &tempEvent);
  146.     (void)EventAvail(everyEvent, &tempEvent);
  147. }
  148.  
  149.  
  150. Boolean CheckSystem(void)
  151. {
  152.     OSErr    err;
  153.     Boolean isSystemGood = true;
  154.     long    gestaltResult;
  155.  
  156.     err = Gestalt(gestaltTimeMgrVersion, &gestaltResult);
  157.  
  158.     isSystemGood = (err == noErr) && (gestaltResult >= gestaltStandardTimeMgr);
  159.  
  160.     if (!isSystemGood)
  161.     {
  162.         CantRunOnThisMachine();
  163.     }
  164.  
  165.     return isSystemGood;
  166. }
  167.  
  168.  
  169. void CreateWindow(void)
  170. {
  171.     gWindowP = SWHasColorQuickDraw() ?
  172.             GetNewCWindow(kWindowResID, NULL, (WindowPtr)-1L) :
  173.             GetNewWindow(kWindowResID, NULL, (WindowPtr)-1L);
  174.  
  175.     if (gWindowP == NULL)
  176.     {
  177.         CantFindResource();
  178.     }
  179. }
  180.  
  181.  
  182. void ErrorAlert(OSErr err, short errorStringIndex)
  183. {
  184.     Str255 messageString, errorString;
  185.  
  186.     GetIndString(messageString, kErrorStringListResID, errorStringIndex);
  187.  
  188.     if (messageString[0] == 0)
  189.     {
  190.         BlockMove(kSeriousDamageString, messageString, sizeof(kSeriousDamageString));
  191.     }
  192.  
  193.     NumToString(err, errorString);
  194.  
  195.     ParamText(messageString, errorString, "\p", "\p");
  196.  
  197.     (void)StopAlert(kErrorAlertResID, NULL);
  198. }
  199.  
  200.  
  201. void FatalError(OSErr err)
  202. {
  203.     if (err != noErr)
  204.     {
  205.         ErrorAlert(err, kFatalErrorStringIndex);
  206.  
  207.         ExitToShell();
  208.     }
  209. }
  210.  
  211.  
  212. void CantFindResource(void)
  213. {
  214.     OSErr err;
  215.  
  216.     err = ResError();
  217.  
  218.     if (err == noErr)
  219.     {
  220.         err = resNotFound;
  221.     }
  222.  
  223.     ErrorAlert(err, kCantFindResourceStringIndex);
  224.  
  225.     ExitToShell();
  226. }
  227.  
  228.  
  229. void CantRunOnThisMachine(void)
  230. {
  231.     (void)StopAlert(kCantRunAlertResID, NULL);
  232. }
  233.